home *** CD-ROM | disk | FTP | other *** search
- '--------------------------------------------------------------------------------
- ' ExternalIP.vbs (v1.5)
- '--------------------------------------------------------------------------------
- '
- ' Retreives your external IP address from http://checkip.dyndns.org/ (this is
- ' useful for computers behind routers and firewalls)
- '
- ' Changes in v1.5
- '
- ' - used regular expressions to pick up IP (removes the <!-- proxy --> bug)
- '
- ' Changes in v1.4
- '
- ' - internet connection detected (thanks AdamC)
- '
- '
- ' Changes in v1.3
- '
- ' - international version returns 2 IP addresses if you have multiple NICs in your
- ' computer - fixed to only show one. (Thanks Rasman)
- '
- ' Changes in v1.2
- '
- ' - uses new URL to save bandwidth
- ' - Old script was actually returning proxy IP, not actual IP!
- '
- ' Changes in v1.1:
- '
- ' - Added error messages
- ' - Hid relevant functions from Samurize 0.85b
- '
- ' -NeM
- '--------------------------------------------------------------------------------
-
- Const CheckConnected = False ' Whether you want the script to check if its connected to the internet
- ' Either True of False
-
-
- Function getExternalIP ()
- dim htmlResult,re,matches
-
- 'Check that Computer is connected to the internet
- Connected = IsConnectible("checkip.dyndns.org","","")
-
- if Connected = True OR CheckConnected = False then
- htmlResult = ReturnHTML("http://checkip.dyndns.org/")
- Set re = New RegExp
- With re
- .Pattern = "\d*\.\d*\.\d*\.\d*"
- .IgnoreCase = True
- .Global = True
- End With
- Set matches = re.Execute(htmlResult)
- if matches.count > 0 then
- getexternalip = matches.item(0).value
- Else
- getExternalIP = "ERROR"
- End If
-
- Else
- getExternalIP = "Offline"
- End If
-
- End Function
-
- Private Function ReturnHTML(sURL)
- Dim objXMLHTTP,HTML
- Set objXMLHTTP = CreateObject("Microsoft.XMLHTTP")
- objXMLHTTP.Open "GET", sURL, False
- objXMLHTTP.Send
- HTML = objXMLHTTP.responseBody
- Set objRS = CreateObject("ADODB.Recordset")
- objRS.Fields.Append "txt", 200, 45000, &H00000080
- objRS.Open
- objRS.AddNew
- objRS.Fields("txt").AppendChunk HTML
- ReturnHTML = objRS("txt").Value
- objRS.Close
- Set objRS = Nothing
- Set objXMLHTTP = Nothing
- End Function
-
- ' This was done by someone on the forums which I copied, and can I find that post again can I heck
- ' So who every you are thanks for the cold.
- Private Function IsConnectible(sHost,iPings,iTO)
- ' Works an "all" WSH versions
- ' sHost is a hostname or IP
-
- ' iPings is number of ping attempts
- ' iTO is timeout in milliseconds
- ' if values are set to "", then defaults below used
-
- If iPings = "" Then iPings = 2
- If iTO = "" Then iTO = 750
-
- Const OpenAsDefault = -2
- Const FailIfNotExist = 0
- Const ForReading = 1
-
- Set oShell = CreateObject("WScript.Shell")
- Set oFSO = CreateObject("Scripting.FileSystemObject")
- sTemp = oShell.ExpandEnvironmentStrings("%TEMP%")
- sTempFile = sTemp & "\runresult.tmp"
-
- oShell.Run "%comspec% /c ping -n " & iPings & " -w " & iTO & " " & sHost & ">" & sTempFile, 0 , True
-
- Set fFile = oFSO.OpenTextFile(sTempFile, ForReading, FailIfNotExist, OpenAsDefault)
-
- sResults = fFile.ReadAll
- fFile.Close
- oFSO.DeleteFile(sTempFile)
-
- Select Case InStr(sResults,"TTL=")
- Case 0 IsConnectible = False
- Case Else IsConnectible = True
- End Select
- End Function
-